Cloudflare Access の認証に Google アカウントを使用してみる
ウィスキー、シガー、パイプをこよなく愛する大栗です。
Cloudflare Access は Zero Trust の重要な要素でユーザー認証を行う機能です。今回は Google の IDaaS である Cloud Identity を使用して認証を行ってみます。
本内容は基本的に以下のドキュメントの内容となっています。
- Cloudflare Docs - Cloudflare Zero Trust - Google
- Cloudflare Docs - Cloudflare Zero Trust - Google Workspace
やってみる
前提
まず、Google Workspace を登録するかCloud Identityに登録して組織リソースを取得しておきます。また、Google Cloud にプロジェクトを作成していない場合にはプロジェクトを作成しておきます。
Google を ID プロバイダーとして設定
Google Cloud Console にアクセスして、[APIs & Services] - [Credentials] に遷移します。CONFIGURE CONSENT SCREEN
をクリックします。
ユーザータイプでExternal
を選択して、CREATE
をクリックします。
アプリ情報として、アプリ名、ユーザーサポートメール、アプリのロゴを入力します。
アプリのドメインとして、アプリケーションのホームページ、アプリケーションのプライバシーポリシーリンク、アプリケーション利用規約リンクを必要に応じて入力します。リンクで使用しているドメインを承認済みドメインをして入力します。
デベロッパーの連絡先情報としてメールアドレスを入力してSAVE AND CONTINUE
(保存して次へ) をクリックします。
ADD OR REMOVE SCOPES
(XXXX)をクリックします。
メールアドレスを Cloudflare 側で取得するために.../auth/userinfo.email
にチェックをしてUPDATE
をクリックします。他にも必要な項目がある場合には、対象の項目をチェックします。
SAVE AND CONTINUE
(保存して次へ) をクリックします。
テストユーザーを追加せずにSAVE AND CONTINUE
(保存して次へ) をクリックします。
内容を確認してBACK TO DASHBOARD
をクリックします。
OAuth の同意画面の設定を確認できます。
[APIs & Services] - [Credentials] に遷移して+ CREATE CREDENTIALS
からOAuth client ID
をクリックします。
Application type でWeb application
、Name に OAuth クライアントの名称を任意に設定します。Authorized JavaScript origins に https://<Cloudflare Zero Trust のチームドメイン>
を入力1します。Authorized redirect URIs に https://<Cloudflare Zero Trust のチームドメイン>/cdn-cgi/access/callback
を入力します。そしてCREATE
をクリックします。
OAuth のクライアント ID とクライアントシークレットが表示されるのでメモしておきます。これは秘匿すべき情報ですので共有する場合には気をつけてください。
もしもクライアントシークレットを失ってしまった場合は、対象のクライアント ID をクリックして内容を確認します。
右側でクライアント ID とクライアントシークレットを確認できます。
Google Workspace をお使いの場合
もし Google Workspace をお使いの場合は以下の操作を追加で実施します。
Google 管理者アカウントでGoogle 管理コンソールにアクセスします。[セキュリティ]-[アクセスとデータ管理]-[API の制御] を開きTrust internal, domain-owned apps
をチェックしてSAVE
をクリックします。
Cloudflare に Idp を登録する
Cloudflare Zero Trust のコンソールで操作を行います。[Settings]-[Authentication] をクリックします。
[Login methods]-[Add new] をクリックします。
Google
をクリックします(Google Workspace を使用している場合にはGoogle Workspace
をクリックします)。
Name に先程作成した Google ID プロバイダーを示す一意な名称を入力し、App ID に OAuth のクライアント ID、Client secret に OAuth のクライアントシークレットを入力します。必要に応じてProof Key for Code Exchange (PKCE)
を有効にしてSave
をクリックします(Google Workspace の場合にはGoogle Workspace domain
が増えているためドメインを入力します)。
認証の確認
Test
をクリックします。
Google アカウントの選択画面が表示されるので使用するアカウントをクリックします。
正常に認証を通過するとYour connection works!
とメッセージが表示されて、name と email が取得できています。
これで Cloudflare Access の認証に アカウントを使用できるようになりました。
さいごに
全社で Google Workspace や Cloud Identity で ID を管理されている場合には Google アカウントを使ってシングルサインオンを行いたいと思いますので、このエントリを参考に設定していただければと思います。
-
チームドメインは、Cloudflare Zero Trust のコンソールで、[Settings]-[General]-[Team domain] を参照してください。
<チーム名>.cloudflareaccess.com
の形式です。 ↩